// package com.szh.htmltopdf.encrypt;
//
// import lombok.extern.slf4j.Slf4j;
// import org.apache.commons.io.IOUtils;
// import org.springframework.core.MethodParameter;
// import org.springframework.http.HttpHeaders;
// import org.springframework.http.HttpInputMessage;
// import org.springframework.http.converter.HttpMessageConverter;
// import org.springframework.web.bind.annotation.ControllerAdvice;
// import org.springframework.web.servlet.mvc.method.annotation.RequestBodyAdvice;
//
// import java.io.IOException;
// import java.io.InputStream;
// import java.lang.reflect.Type;
//
// @Slf4j
// @ControllerAdvice
// public class EncryptRequestBodyAdvice implements RequestBodyAdvice {
//
//     @Override
//     public boolean supports(MethodParameter methodParameter, Type targetType,
//                             Class<? extends HttpMessageConverter<?>> converterType) {
//         return true;
//     }
//
//     @Override
//     public Object handleEmptyBody(Object body, HttpInputMessage inputMessage, MethodParameter parameter,
//                                   Type targetType, Class<? extends HttpMessageConverter<?>> converterType) {
//         return body;
//     }
//
//     @Override
//     public HttpInputMessage beforeBodyRead(HttpInputMessage inputMessage, MethodParameter parameter, Type targetType,
//                                            Class<? extends HttpMessageConverter<?>> converterType)
//             throws IOException {
//
//         try {
//             return new DecryptHttpInputMessage(inputMessage);
//         } catch (Exception e) {
//             log.error("数据解密失败", e);
//         }
//         return inputMessage;
//
//     }
//
//     @Override
//     public Object afterBodyRead(Object body, HttpInputMessage inputMessage, MethodParameter parameter, Type targetType,
//                                 Class<? extends HttpMessageConverter<?>> converterType) {
//         return body;
//     }
// }
//
// @Slf4j
// class DecryptHttpInputMessage implements HttpInputMessage {
//     private HttpHeaders headers;
//     private InputStream body;
//
//     public DecryptHttpInputMessage(HttpInputMessage inputMessage) throws Exception {
//         this.headers = inputMessage.getHeaders();
//         String content = IOUtils.toString(inputMessage.getBody(), "utf-8");
//         log.info("请求加密前报文：{}", content);
//         content = AesUtil.decrypt(content, "123456");
//         log.info("请求解密报文：{}", content);
//         this.body = IOUtils.toInputStream(content, "utf-8");
//     }
//
//     @Override
//     public InputStream getBody() throws IOException {
//         return body;
//     }
//
//     @Override
//     public HttpHeaders getHeaders() {
//         return headers;
//     }
//
// }
